package imanager.showcases.agenda.client;

import imanager.showcases.agenda.entity.Compra;

import com.googlecode.imanager.client.Container;
import com.googlecode.imanager.client.TableRow;
import com.googlecode.imanager.client.report.Field;
import com.googlecode.imanager.client.value.el.Expression;
import com.googlecode.imanager.client.value.el.Multiply;
import com.googlecode.imanager.client.value.el.Reference;
import com.googlecode.imanager.client.value.el.Round;

/**
 * @author wellsantos@wellsantos.com
 * @since 0.01
 */
public class ListaComprasItem extends TableRow {

    private static final long serialVersionUID = 1L;

    protected Field<String> produtoField;
    protected Field<Integer> quantidadeField;
    protected Field<Double> valorUnitarioField;
    protected Field<Expression> valorTotalField;
    
    protected Expression valorTotalExpression;
    
    public ListaComprasItem(){
        setSize(400, 20);
        //Style style = new Style();
        //style.setBackground(new Background(Color.WHITE));
        //style.setBorder(new Border(0));
        //style.setBorderBottom(new Border(Color.valueOf(0xeeeeee)));
        //setStyle(style);
        initializeControls();
    }
    
    public ListaComprasItem(Container parent) {
        this();
        setParent(parent);
    }
    
    protected void initializeControls(){
        produtoField = new Field<String>(this);
        quantidadeField = new Field<Integer>(this);
        valorUnitarioField = new Field<Double>(this);
        valorTotalField = new Field<Expression>(this);
        
        valorTotalExpression = new Round(new Multiply(
                new Reference(quantidadeField), new Reference(valorUnitarioField)), 2);
        
        produtoField.setBounds(0, 0, 90, 20);
        quantidadeField.setBounds(100, 0, 90, 20);
        valorUnitarioField.setBounds(200, 0, 90, 20);
        valorTotalField.setBounds(300, 0, 90, 20);
    }

    public void setColumnValues(String produto, String quantidade, 
                                String valorUnitario, String valorTotal) {
        produtoField.setText(produto);
        quantidadeField.setText(quantidade);
        valorUnitarioField.setText(valorUnitario);
        valorTotalField.setText(valorTotal);
    }
    
    public void setCompra(Compra compra) {        
        produtoField.setValue("Produto-" + compra.getIdProduto());
        quantidadeField.setValue(compra.getQuantidade());
        valorUnitarioField.setValue(compra.getValorUnitario());
        valorTotalField.setValue(valorTotalExpression);
    }

    public Field<String> getProdutoField() {
        return produtoField;
    }

    public Field<Integer> getQuantidadeField() {
        return quantidadeField;
    }

    public Field<Double> getValorUnitarioField() {
        return valorUnitarioField;
    }

    public Field<Expression> getValorTotalField() {
        return valorTotalField;
    }

    public Expression getValorTotalExpression() {
        return valorTotalExpression;
    }

}